/* Emacs style mode select   -*- C++ -*- */
/*-----------------------------------------------------------------------------*/

/* $Id:$*/

/* Copyright (C) 1993-1996 by id Software, Inc.*/

/* This source is available for distribution and/or modification*/
/* only under the terms of the DOOM Source Code License as*/
/* published by id Software. All rights reserved.*/

/* The source is distributed in the hope that it will be useful,*/
/* but WITHOUT ANY WARRANTY; without even the implied warranty of*/
/* FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License*/
/* for more details.*/

/* DESCRIPTION:*/
/*	Refresh/render internal state variables (global).*/

/*-----------------------------------------------------------------------------*/


#ifndef __R_STATE__
#define __R_STATE__

/* Need data structure definitions.*/
#include "d_player.h"
#include "r_data.h"



#ifdef __GNUG__
#pragma interface
#endif




/* Refresh internal data structures,*/
/*  for rendering.*/


/* needed for texture pegging*/
extern fixed_t*		textureheight;

/* needed for pre rendering (fracs)*/
extern fixed_t*		spritewidth;

extern fixed_t*		spriteoffset;
extern fixed_t*		spritetopoffset;

/* Colourmap type fixed to byte by WAD! So use bytes, not lighttable_t */
#ifdef DIYBOOM
extern byte**		colormaps;
extern byte*		fullcolormap;
extern int		numcolormaps;
#else
extern byte*		colormaps;
#endif

extern int		firstflat;

/* for global animation*/
extern int*		flattranslation;
extern int*		texturetranslation;


/* Sprite....*/
extern int		firstspritelump;
extern int		lastspritelump;
extern int		numspritelumps;




/* Lookup tables for map data.*/

extern int		numsprites;
extern spritedef_t*	sprites;

extern int		numvertexes;
extern vertex_t*	vertexes;

extern int		numsegs;
extern seg_t*		segs;

extern int		numsectors;
extern sector_t*	sectors;

extern int		numsubsectors;
extern subsector_t*	subsectors;

extern int		numnodes;
extern node_t*		nodes;

extern int		numlines;
extern line_t*		lines;

extern int		numsides;
extern side_t*		sides;



/* POV data.*/

extern fixed_t		viewx;
extern fixed_t		viewy;
extern fixed_t		viewz;

extern angle_t		viewangle;
extern player_t*	viewplayer;


/* ?*/
extern angle_t		clipangle;

extern int		viewangletox[FINEANGLES/2];
#ifdef STATIC_RESOLUTION
extern angle_t		xtoviewangle[SCREENWIDTH+1];
#else
extern angle_t		xtoviewangle[MAXSCREENWIDTH+1];
#endif
/*extern fixed_t		finetangent[FINEANGLES/2];*/

extern fixed_t		rw_distance;
extern angle_t		rw_normalangle;



/* angle to line origin*/
extern int		rw_angle1;

/* Segs count?*/
extern int		sscount;

extern visplane_head_t*	floorplane;
extern visplane_head_t*	ceilingplane;


#endif
/*-----------------------------------------------------------------------------*/

/* $Log:$*/

/*-----------------------------------------------------------------------------*/
